/*
 * Copyright [2022] [https://www.xiaonuo.vip]
 *
 * Snowy采用APACHE LICENSE 2.0开源协议，您在使用过程中，需要注意以下几点：
 *
 * 1.请不要删除和修改根目录下的LICENSE文件。
 * 2.请不要删除和修改Snowy源码头部的版权声明。
 * 3.本项目代码可免费商业使用，商业使用请保留源码和相关描述文件的项目出处，作者声明等。
 * 4.分发源码时候，请注明软件出处 https://www.xiaonuo.vip
 * 5.不可二次分发开源参与同类竞品，如有想法可联系团队xiaonuobase@qq.com商议合作。
 * 6.若您的项目无法满足以上几点，需要更多功能代码，获取Snowy商业授权许可，请在官网购买授权，地址为 https://www.xiaonuo.vip
 */
package vip.xiaonuo.invoice.core.enums.invoice;

import lombok.AllArgsConstructor;
import lombok.Getter;


/**
 * 发票错误码枚举
 *
 * @author AI Assistant
 */
@Getter
@AllArgsConstructor
public enum InvoiceErrorCodeEnum  {

    /** 成功 */
    INVOICE_SUCCESS(0, "开票提交成功"),

    /** 成功 */
    REDELIVER_SUCCESS(0, "重新交付成功"),

    /** 成功 */
    GET_VALID_CODE_SUCCESS(0, "开票提交成功"),

    /** 参数校验失败 */
    PARAM_VALIDATE_ERROR(400, "参数校验失败"),

    /** 销方税号不能为空 */
    SELLER_TAX_NUMBER_EMPTY(4001, "销方税号不能为空"),

    /** 销方信息不存在 */
    SELLER_INFO_NOT_FOUND(4002, "未找到对应的销方信息"),

    /** 购方名称不能为空 */
    BUYER_NAME_EMPTY(4003, "购方名称不能为空"),

    /** 开票金额不能为空 */
    AMOUNT_EMPTY(4004, "开票金额不能为空"),

    /** 商品明细不能为空 */
    ITEM_LIST_EMPTY(4005, "商品明细不能为空"),

    /** 回调URL不能为空 */
    CALLBACK_URL_EMPTY(4006, "回调URL不能为空"),

    /** 开票平台未指定 */
    PLATFORM_CODE_EMPTY(4007, "开票平台未指定"),

    /** 开票平台不合法 */
    PLATFORM_CODE_INVALID(4008, "指定的开票平台不合法"),

    /** 开票失败 */
    INVOICE_CREATE_FAILED(5001, "开票失败"),

    /** 发票ID不能为空 */
    INVOICE_ID_EMPTY(4009, "发票ID不能为空"),

    /** 未找到对应的发票 */
    INVOICE_NOT_FOUND(4010, "未找到对应的发票"),

    /** 发票类型不能为空 */
    INVOICE_TYPE_EMPTY(4011, "发票类型不能为空"),

    /** 含税标志不能为空 */
    INCLUDE_TAX_FLAG_EMPTY(4012, "含税标志不能为空"),

    /** 商品名称不能为空 */
    PRODUCT_NAME_EMPTY(4013, "商品名称不能为空"),

    /** 商品编码不能为空 */
    PRODUCT_CODE_EMPTY(4014, "商品编码不能为空"),

    /** 税率不能为空 */
    TAX_RATE_EMPTY(4015, "税率不能为空"),

    /** 税额不能为空 */
    TAX_EMPTY(4016, "税额不能为空"),

    REDELIVER_FAILED(9001,"重新交付失败"),

    /** 参数错误 */
    PARAM_ERROR(400, "参数错误"),

    /** 发票不存在 */
    INVOICE_NOT_EXIST(404, "发票不存在"),

    /** 重新开票无请求数据 */
    RECREATE_NO_REQUEST_DATA(9002, "重新开票无请求数据"),

    /** 重新开票反序列化失败 */
    RECREATE_DESERIALIZE_ERROR(9003, "重新开票反序列化失败"),

    /** 重新开票失败 */
    RECREATE_INVOICE_FAILED(9004, "重新开票失败"),

    /** 平台适配器未找到 */
    PLATFORM_ADAPTER_NOT_FOUND(9005, "平台适配器未找到"),

    /** 发票重复 */
    INVOICE_DUPLICATED(9006, "发票一开具,无法重复开票"),

    /** 未归纳 */
    NONE_ERROR(500, "未归纳错误");


    /** 错误码 */
    private final int code;

    /** 错误描述 */
    private final String msg;

}
